package com.zzh.lib.dialog;


import android.content.Context;

import com.zzh.lib.xpopup.XPopup;
import com.zzh.lib.xpopup.impl.ConfirmPopupView;
import com.zzh.lib.xpopup.interfaces.OnCancelListener;
import com.zzh.lib.xpopup.interfaces.OnConfirmListener;

/**
 * Created by zzh on 2023/7/31.
 *
 * @date: 2023/7/31 15:09
 * @email: zzh_hz@126.com
 * @author: zzh
 * @description: com.zzh.lib.dialog 提示框
 */
public class AlertDialog {
    /**
     * 普通提示弹框，底部一个确定按钮.
     *
     * @param ctx 上下文
     * @param msg 提示内容
     * @return this.dialog
     */
    public static ConfirmPopupView show(Context ctx, String msg) {
        return show(ctx, null, msg, "", "确定", null, null, true);
    }

    /**
     * 普通提示弹框，底部一个确定按钮
     *
     * @param ctx   上下文
     * @param title 标题
     * @param msg   提示内容
     * @return this.dialog
     */
    public static ConfirmPopupView show(Context ctx, String title, String msg) {
        return show(ctx, title, msg, "", "确定", null, null, true);
    }

    /**
     * 弹出框
     *
     * @param ctx             上下文
     * @param title           提示标题
     * @param msg             提示内容
     * @param confirmListener 确认点击事件监听
     * @return this.dialog
     */
    public static ConfirmPopupView show(Context ctx, String title, String msg, OnConfirmListener confirmListener) {
        return show(ctx, title, msg, "", "确定", confirmListener, null, true);
    }

    /**
     * 提示框，有提示标题，提示内容，取消，确定按钮
     *
     * @param ctx             上下文
     * @param title           标题
     * @param msg             提示内容
     * @param confirmListener 确定点击事件
     * @param cancelListener  取消点击事件
     * @return this.dialog
     */
    public static ConfirmPopupView show(Context ctx, String title, String msg, OnConfirmListener confirmListener, OnCancelListener cancelListener) {
        return show(ctx, title, msg, "取消", "确定", confirmListener, cancelListener, false);
    }

    /**
     * 提示框. 注意如果取消或者确定的文字内容为null，则不展示按钮。
     *
     * @param ctx             上下文
     * @param title           标题
     * @param msg             提示内容
     * @param cancelBtnTxt    左边按钮文字
     * @param confirmBtnTxt   右边按钮文字
     * @param confirmListener 右边按钮点击事件
     * @param cancelListener  左边按钮点击事件
     * @param isHideCancelBtn 是否展示左边按钮
     * @return 当前创建的弹窗
     */
    public static ConfirmPopupView show(Context ctx, String title, String msg, String cancelBtnTxt,
                                        String confirmBtnTxt, OnConfirmListener confirmListener,
                                        OnCancelListener cancelListener, boolean isHideCancelBtn) {
        ConfirmPopupView popupView = new XPopup.Builder(ctx)
                .isDestroyOnDismiss(true)
                .dismissOnBackPressed(true)
                .asConfirm(title, msg,
                        cancelBtnTxt, confirmBtnTxt,
                        confirmListener, cancelListener, isHideCancelBtn);
        popupView.show();
        return popupView;
    }
}
